/*
 *
 *
 *
 *
 * Scaloid: Simpler Android
 *
 * http://scaloid.org
 *
 *
 *
 *
 *
 *
 * Copyright 2013 Sung-Ho Lee and Scaloid contributors
 *
 * Sung-Ho Lee and Scaloid contributors licenses this file to you under the Apache License,
 * version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at:
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

/*
 * This file is automatically generated. Any changes on this file will be OVERWRITTEN!
 * To learn how to contribute, please refer to:
 * https://github.com/pocorall/scaloid/wiki/Inside-Scaloid
 */

package org.scaloid.common

import android.app._
import android.content._
import android.view._
import android.view.View._
import android.widget._
import scala.language.implicitConversions
import ViewImplicits._

trait PressAndHoldable[+This <: View] {
  def basis: This

  class PressAndHoldListener(interval: Int, onPressed: () => Unit) extends View.OnTouchListener with View.OnLongClickListener {
    var autoIncrementing: Boolean = false
    private val repeatUpdateHandler = new android.os.Handler()

    override def onTouch(v: View, event: MotionEvent): Boolean = {
      if (event.getAction == MotionEvent.ACTION_UP && autoIncrementing) {
        autoIncrementing = false
      }
      false
    }

    override def onLongClick(p1: View): Boolean = {
      autoIncrementing = true
      if (interval == 0)
        onPressed()
      else
        repeatUpdateHandler.post(new RptUpdater)
      false
    }

    class RptUpdater extends Runnable {
      override def run(): Unit = {
        if (autoIncrementing) {
          onPressed()
          repeatUpdateHandler.postDelayed(this, interval)
        }
      }
    }
  }

  def onPressAndHold(interval: Int, onPressed: => Unit): This = {
    val listener = new PressAndHoldListener(interval, () => onPressed)
    basis.onTouchListener(listener)
    basis.onLongClickListener(listener)
  }
}

trait ViewOnClickListener {
  def func: View => Unit

  def onClickListener: View.OnClickListener
}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/View.html android.view.View]]`.
 */
class RichView[This <: android.view.View](val basis: This) extends TraitView[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/View.html android.view.View]]`. This contains several property accessors.
 */
trait TraitView[This <: android.view.View] extends ConstantsSupport with PressAndHoldable[This] {

  def basis: This

  @inline def find[V <: View](id: Int): V = basis.findViewById(id).asInstanceOf[V]

  @inline def uniqueId(implicit activity: Activity): Int = {
    if (basis.getId < 0) {
      basis.setId(getUniqueId)
    }
    basis.getId
  }
  /**
   * Place the widget into a ViewGroup.
   * {{{
   * lazy val blueText = new STextView("Blue")
   * contentView = new SVerticalLayout {
   *   blueText.here textColor Color.BLUE
   * }
   * }}}
   */
  @inline def here[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP) = {
    val parent = parentViewGroupIfExists
    if (parent != null) parent += basis
    basis
  }

  /**
   * Place the widget into a ViewGroup, without applying styles.
   * {{{
   * lazy val blueText = new STextView("Blue") textColor Color.BLUE
   * contentView = new SVerticalLayout {
   *   style {
   *     case t: STextView => t textColor Color.RED
   *   }
   *   blueText.hereWithoutStyle
   * }
   * }}}
   */
  @inline def hereWithoutStyle[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP) = {
    val parent = parentViewGroupIfExists
    if (parent != null) (parent.basis.asInstanceOf[ViewGroup]).addView(basis) // TODO remove asInstanceOf
    basis
  }

  @deprecated("", "") val FILL_PARENT = ViewGroup.LayoutParams.FILL_PARENT
  val MATCH_PARENT = ViewGroup.LayoutParams.MATCH_PARENT
  val WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT

  @inline def fill[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP) = {
    <<.fill
    basis
  }

  @inline def wrap[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP) = {
    <<.wrap
    basis
  }

  @inline def wf[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP) = {
    <<.wf
    basis
  }

  @inline def fw[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP) = {
    <<.fw
    basis
  }

  def <<[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP): LP =
    defaultLayoutParam(basis)

  // TODO: Make the return type as Option[TraitViewGroup[_]]
  protected def parentViewGroupIfExists[LP <: ViewGroupLayoutParams[_, _]](implicit defaultLayoutParam: This => LP = (v: This) => null): TraitViewGroup[_] = {
    val lp = defaultLayoutParam(basis)
    if (lp == null) null else lp.parent
  }

  def <<[LP <: ViewGroupLayoutParams[_, _]](width: Int, height: Int)(implicit defaultLayoutParam: This => LP): LP = {
    val lp = defaultLayoutParam(basis)
    lp.height = height
    lp.width = width
    lp
  }

  val parentViewGroup: TraitViewGroup[_] = null

  @inline def padding_=(p: Int) = {
    basis.setPadding(p, p, p, p)
    basis
  }

  @inline def padding(p: Int) = padding_=(p)

  @inline def padding: Int = 0

  @inline def padding(p1: Int, p2: Int, p3: Int, p4: Int) = {
    basis.setPadding(p1, p2, p3, p4)
    basis
  }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackground(android.graphics.drawable.Drawable) setBackground(android.graphics.drawable.Drawable)]]`
   */
  @inline def background(p: android.graphics.drawable.Drawable) = background_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackground(android.graphics.drawable.Drawable) setBackground(android.graphics.drawable.Drawable)]]`
   */
  @inline def background_=(p: android.graphics.drawable.Drawable) = { basis.setBackgroundDrawable(p); basis } // to avoid compatibility issue on API Level < 16, calls setBackgroundDrawable() although it is deprecated.

  @inline def accessibilityDelegate(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'accessibilityDelegate'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setAccessibilityDelegate(android.view.View.AccessibilityDelegate) setAccessibilityDelegate(android.view.View.AccessibilityDelegate)]]`
   */
  @inline def accessibilityDelegate(p: android.view.View.AccessibilityDelegate) = accessibilityDelegate_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setAccessibilityDelegate(android.view.View.AccessibilityDelegate) setAccessibilityDelegate(android.view.View.AccessibilityDelegate)]]`
   */
  @inline def accessibilityDelegate_=(p: android.view.View.AccessibilityDelegate) = { basis.setAccessibilityDelegate(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getAccessibilityNodeProvider() getAccessibilityNodeProvider()]]`
   */
  @inline def accessibilityNodeProvider = basis.getAccessibilityNodeProvider

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isActivated() isActivated()]]`
   */
  @inline def activated = basis.isActivated

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setActivated(boolean) setActivated(boolean)]]`
   */
  @inline def activated(p: Boolean) = activated_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setActivated(boolean) setActivated(boolean)]]`
   */
  @inline def activated_=(p: Boolean) = { basis.setActivated(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getAlpha() getAlpha()]]`
   */
  @inline def alpha = basis.getAlpha

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setAlpha(float) setAlpha(float)]]`
   */
  @inline def alpha(p: Float) = alpha_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setAlpha(float) setAlpha(float)]]`
   */
  @inline def alpha_=(p: Float) = { basis.setAlpha(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getAnimation() getAnimation()]]`
   */
  @inline def animation = basis.getAnimation

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setAnimation(android.view.animation.Animation) setAnimation(android.view.animation.Animation)]]`
   */
  @inline def animation(p: android.view.animation.Animation) = animation_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setAnimation(android.view.animation.Animation) setAnimation(android.view.animation.Animation)]]`
   */
  @inline def animation_=(p: android.view.animation.Animation) = { basis.setAnimation(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getApplicationWindowToken() getApplicationWindowToken()]]`
   */
  @inline def applicationWindowToken = basis.getApplicationWindowToken

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getBackground() getBackground()]]`
   */
  @inline def background = basis.getBackground

  @inline def backgroundColor(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'backgroundColor'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackgroundColor(int) setBackgroundColor(int)]]`
   */
  @inline def backgroundColor(p: Int) = backgroundColor_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackgroundColor(int) setBackgroundColor(int)]]`
   */
  @inline def backgroundColor_=(p: Int) = { basis.setBackgroundColor(p); basis }

  @inline def backgroundDrawable(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'backgroundDrawable'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackgroundDrawable(android.graphics.drawable.Drawable) setBackgroundDrawable(android.graphics.drawable.Drawable)]]`
   */
  @deprecated("", "") @inline def backgroundDrawable(p: android.graphics.drawable.Drawable) = backgroundDrawable_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackgroundDrawable(android.graphics.drawable.Drawable) setBackgroundDrawable(android.graphics.drawable.Drawable)]]`
   */
  @deprecated("", "") @inline def backgroundDrawable_=(p: android.graphics.drawable.Drawable) = { basis.setBackgroundDrawable(p); basis }

  @inline def backgroundResource(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'backgroundResource'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackgroundResource(int) setBackgroundResource(int)]]`
   */
  @inline def backgroundResource(p: Int) = backgroundResource_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBackgroundResource(int) setBackgroundResource(int)]]`
   */
  @inline def backgroundResource_=(p: Int) = { basis.setBackgroundResource(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getBaseline() getBaseline()]]`
   */
  @inline def baseline = basis.getBaseline

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getBottom() getBottom()]]`
   */
  @inline def bottom = basis.getBottom

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBottom(int) setBottom(int)]]`
   */
  @inline def bottom(p: Int) = bottom_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setBottom(int) setBottom(int)]]`
   */
  @inline def bottom_=(p: Int) = { basis.setBottom(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getCameraDistance() getCameraDistance()]]`
   */
  @inline def cameraDistance = basis.getCameraDistance

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setCameraDistance(float) setCameraDistance(float)]]`
   */
  @inline def cameraDistance(p: Float) = cameraDistance_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setCameraDistance(float) setCameraDistance(float)]]`
   */
  @inline def cameraDistance_=(p: Float) = { basis.setCameraDistance(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isClickable() isClickable()]]`
   */
  @inline def clickable = basis.isClickable

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setClickable(boolean) setClickable(boolean)]]`
   */
  @inline def clickable(p: Boolean) = clickable_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setClickable(boolean) setClickable(boolean)]]`
   */
  @inline def clickable_=(p: Boolean) = { basis.setClickable(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getContentDescription() getContentDescription()]]`
   */
  @inline def contentDescription = basis.getContentDescription

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setContentDescription(java.lang.CharSequence) setContentDescription(java.lang.CharSequence)]]`
   */
  @inline def contentDescription(p: java.lang.CharSequence) = contentDescription_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setContentDescription(java.lang.CharSequence) setContentDescription(java.lang.CharSequence)]]`
   */
  @inline def contentDescription_=(p: java.lang.CharSequence) = { basis.setContentDescription(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getContext() getContext()]]`
   */
  @inline def context = basis.getContext

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getDrawableState() getDrawableState()]]`
   */
  @inline def drawableState = basis.getDrawableState

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getDrawingCache() getDrawingCache()]]`
   */
  @inline def drawingCache = basis.getDrawingCache

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getDrawingCacheBackgroundColor() getDrawingCacheBackgroundColor()]]`
   */
  @inline def drawingCacheBackgroundColor = basis.getDrawingCacheBackgroundColor

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDrawingCacheBackgroundColor(int) setDrawingCacheBackgroundColor(int)]]`
   */
  @inline def drawingCacheBackgroundColor(p: Int) = drawingCacheBackgroundColor_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDrawingCacheBackgroundColor(int) setDrawingCacheBackgroundColor(int)]]`
   */
  @inline def drawingCacheBackgroundColor_=(p: Int) = { basis.setDrawingCacheBackgroundColor(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isDrawingCacheEnabled() isDrawingCacheEnabled()]]`
   */
  @inline def drawingCacheEnabled = basis.isDrawingCacheEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDrawingCacheEnabled(boolean) setDrawingCacheEnabled(boolean)]]`
   */
  @inline def drawingCacheEnabled(p: Boolean) = drawingCacheEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDrawingCacheEnabled(boolean) setDrawingCacheEnabled(boolean)]]`
   */
  @inline def drawingCacheEnabled_=(p: Boolean) = { basis.setDrawingCacheEnabled(p); basis }

  @inline def enableDrawingCache() = { basis.setDrawingCacheEnabled(true); basis }
  @inline def disableDrawingCache() = { basis.setDrawingCacheEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getDrawingCacheQuality() getDrawingCacheQuality()]]`
   */
  @inline def drawingCacheQuality = basis.getDrawingCacheQuality

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDrawingCacheQuality(int) setDrawingCacheQuality(int)]]`
   */
  @inline def drawingCacheQuality(p: Int) = drawingCacheQuality_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDrawingCacheQuality(int) setDrawingCacheQuality(int)]]`
   */
  @inline def drawingCacheQuality_=(p: Int) = { basis.setDrawingCacheQuality(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getDrawingTime() getDrawingTime()]]`
   */
  @inline def drawingTime = basis.getDrawingTime

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isDuplicateParentStateEnabled() isDuplicateParentStateEnabled()]]`
   */
  @inline def duplicateParentStateEnabled = basis.isDuplicateParentStateEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDuplicateParentStateEnabled(boolean) setDuplicateParentStateEnabled(boolean)]]`
   */
  @inline def duplicateParentStateEnabled(p: Boolean) = duplicateParentStateEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setDuplicateParentStateEnabled(boolean) setDuplicateParentStateEnabled(boolean)]]`
   */
  @inline def duplicateParentStateEnabled_=(p: Boolean) = { basis.setDuplicateParentStateEnabled(p); basis }

  @inline def enableDuplicateParentState() = { basis.setDuplicateParentStateEnabled(true); basis }
  @inline def disableDuplicateParentState() = { basis.setDuplicateParentStateEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isEnabled() isEnabled()]]`
   */
  @inline def enabled = basis.isEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setEnabled(boolean) setEnabled(boolean)]]`
   */
  @inline def enabled(p: Boolean) = enabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setEnabled(boolean) setEnabled(boolean)]]`
   */
  @inline def enabled_=(p: Boolean) = { basis.setEnabled(p); basis }

  @inline def enable() = { basis.setEnabled(true); basis }
  @inline def disable() = { basis.setEnabled(false); basis }

  @inline def fadingEdgeLength(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'fadingEdgeLength'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFadingEdgeLength(int) setFadingEdgeLength(int)]]`
   */
  @inline def fadingEdgeLength(p: Int) = fadingEdgeLength_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFadingEdgeLength(int) setFadingEdgeLength(int)]]`
   */
  @inline def fadingEdgeLength_=(p: Int) = { basis.setFadingEdgeLength(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getFilterTouchesWhenObscured() getFilterTouchesWhenObscured()]]`
   */
  @inline def filterTouchesWhenObscured = basis.getFilterTouchesWhenObscured

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFilterTouchesWhenObscured(boolean) setFilterTouchesWhenObscured(boolean)]]`
   */
  @inline def filterTouchesWhenObscured(p: Boolean) = filterTouchesWhenObscured_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFilterTouchesWhenObscured(boolean) setFilterTouchesWhenObscured(boolean)]]`
   */
  @inline def filterTouchesWhenObscured_=(p: Boolean) = { basis.setFilterTouchesWhenObscured(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getFitsSystemWindows() getFitsSystemWindows()]]`
   */
  @inline def fitsSystemWindows = basis.getFitsSystemWindows

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFitsSystemWindows(boolean) setFitsSystemWindows(boolean)]]`
   */
  @inline def fitsSystemWindows(p: Boolean) = fitsSystemWindows_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFitsSystemWindows(boolean) setFitsSystemWindows(boolean)]]`
   */
  @inline def fitsSystemWindows_=(p: Boolean) = { basis.setFitsSystemWindows(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isFocusable() isFocusable()]]`
   */
  @inline def focusable = basis.isFocusable

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFocusable(boolean) setFocusable(boolean)]]`
   */
  @inline def focusable(p: Boolean) = focusable_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFocusable(boolean) setFocusable(boolean)]]`
   */
  @inline def focusable_=(p: Boolean) = { basis.setFocusable(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isFocusableInTouchMode() isFocusableInTouchMode()]]`
   */
  @inline def focusableInTouchMode = basis.isFocusableInTouchMode

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFocusableInTouchMode(boolean) setFocusableInTouchMode(boolean)]]`
   */
  @inline def focusableInTouchMode(p: Boolean) = focusableInTouchMode_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setFocusableInTouchMode(boolean) setFocusableInTouchMode(boolean)]]`
   */
  @inline def focusableInTouchMode_=(p: Boolean) = { basis.setFocusableInTouchMode(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getHandler() getHandler()]]`
   */
  @inline def handler = basis.getHandler

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isHapticFeedbackEnabled() isHapticFeedbackEnabled()]]`
   */
  @inline def hapticFeedbackEnabled = basis.isHapticFeedbackEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHapticFeedbackEnabled(boolean) setHapticFeedbackEnabled(boolean)]]`
   */
  @inline def hapticFeedbackEnabled(p: Boolean) = hapticFeedbackEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHapticFeedbackEnabled(boolean) setHapticFeedbackEnabled(boolean)]]`
   */
  @inline def hapticFeedbackEnabled_=(p: Boolean) = { basis.setHapticFeedbackEnabled(p); basis }

  @inline def enableHapticFeedback() = { basis.setHapticFeedbackEnabled(true); basis }
  @inline def disableHapticFeedback() = { basis.setHapticFeedbackEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHasTransientState(boolean) setHasTransientState(boolean)]]`
   */
  @inline def hasTransientState(p: Boolean) = hasTransientState_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHasTransientState(boolean) setHasTransientState(boolean)]]`
   */
  @inline def hasTransientState_=(p: Boolean) = { basis.setHasTransientState(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getHeight() getHeight()]]`
   */
  @inline def height = basis.getHeight

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isHorizontalFadingEdgeEnabled() isHorizontalFadingEdgeEnabled()]]`
   */
  @inline def horizontalFadingEdgeEnabled = basis.isHorizontalFadingEdgeEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHorizontalFadingEdgeEnabled(boolean) setHorizontalFadingEdgeEnabled(boolean)]]`
   */
  @inline def horizontalFadingEdgeEnabled(p: Boolean) = horizontalFadingEdgeEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHorizontalFadingEdgeEnabled(boolean) setHorizontalFadingEdgeEnabled(boolean)]]`
   */
  @inline def horizontalFadingEdgeEnabled_=(p: Boolean) = { basis.setHorizontalFadingEdgeEnabled(p); basis }

  @inline def enableHorizontalFadingEdge() = { basis.setHorizontalFadingEdgeEnabled(true); basis }
  @inline def disableHorizontalFadingEdge() = { basis.setHorizontalFadingEdgeEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getHorizontalFadingEdgeLength() getHorizontalFadingEdgeLength()]]`
   */
  @inline def horizontalFadingEdgeLength = basis.getHorizontalFadingEdgeLength

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isHorizontalScrollBarEnabled() isHorizontalScrollBarEnabled()]]`
   */
  @inline def horizontalScrollBarEnabled = basis.isHorizontalScrollBarEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHorizontalScrollBarEnabled(boolean) setHorizontalScrollBarEnabled(boolean)]]`
   */
  @inline def horizontalScrollBarEnabled(p: Boolean) = horizontalScrollBarEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHorizontalScrollBarEnabled(boolean) setHorizontalScrollBarEnabled(boolean)]]`
   */
  @inline def horizontalScrollBarEnabled_=(p: Boolean) = { basis.setHorizontalScrollBarEnabled(p); basis }

  @inline def enableHorizontalScrollBar() = { basis.setHorizontalScrollBarEnabled(true); basis }
  @inline def disableHorizontalScrollBar() = { basis.setHorizontalScrollBarEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isHovered() isHovered()]]`
   */
  @inline def hovered = basis.isHovered

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHovered(boolean) setHovered(boolean)]]`
   */
  @inline def hovered(p: Boolean) = hovered_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setHovered(boolean) setHovered(boolean)]]`
   */
  @inline def hovered_=(p: Boolean) = { basis.setHovered(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getId() getId()]]`
   */
  @inline def id = basis.getId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setId(int) setId(int)]]`
   */
  @inline def id(p: Int) = id_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setId(int) setId(int)]]`
   */
  @inline def id_=(p: Int) = { basis.setId(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getImportantForAccessibility() getImportantForAccessibility()]]`
   */
  @inline def importantForAccessibility = basis.getImportantForAccessibility

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setImportantForAccessibility(int) setImportantForAccessibility(int)]]`
   */
  @inline def importantForAccessibility(p: Int) = importantForAccessibility_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setImportantForAccessibility(int) setImportantForAccessibility(int)]]`
   */
  @inline def importantForAccessibility_=(p: Int) = { basis.setImportantForAccessibility(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getKeepScreenOn() getKeepScreenOn()]]`
   */
  @inline def keepScreenOn = basis.getKeepScreenOn

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean) setKeepScreenOn(boolean)]]`
   */
  @inline def keepScreenOn(p: Boolean) = keepScreenOn_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean) setKeepScreenOn(boolean)]]`
   */
  @inline def keepScreenOn_=(p: Boolean) = { basis.setKeepScreenOn(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getKeyDispatcherState() getKeyDispatcherState()]]`
   */
  @inline def keyDispatcherState = basis.getKeyDispatcherState

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getLayerType() getLayerType()]]`
   */
  @inline def layerType = basis.getLayerType

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getLayoutParams() getLayoutParams()]]`
   */
  @inline def layoutParams = basis.getLayoutParams

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setLayoutParams(android.view.ViewGroup.LayoutParams) setLayoutParams(android.view.ViewGroup.LayoutParams)]]`
   */
  @inline def layoutParams(p: android.view.ViewGroup.LayoutParams) = layoutParams_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setLayoutParams(android.view.ViewGroup.LayoutParams) setLayoutParams(android.view.ViewGroup.LayoutParams)]]`
   */
  @inline def layoutParams_=(p: android.view.ViewGroup.LayoutParams) = { basis.setLayoutParams(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getLeft() getLeft()]]`
   */
  @inline def left = basis.getLeft

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setLeft(int) setLeft(int)]]`
   */
  @inline def left(p: Int) = left_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setLeft(int) setLeft(int)]]`
   */
  @inline def left_=(p: Int) = { basis.setLeft(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isLongClickable() isLongClickable()]]`
   */
  @inline def longClickable = basis.isLongClickable

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setLongClickable(boolean) setLongClickable(boolean)]]`
   */
  @inline def longClickable(p: Boolean) = longClickable_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setLongClickable(boolean) setLongClickable(boolean)]]`
   */
  @inline def longClickable_=(p: Boolean) = { basis.setLongClickable(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMatrix() getMatrix()]]`
   */
  @inline def matrix = basis.getMatrix

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMeasuredHeight() getMeasuredHeight()]]`
   */
  @inline def measuredHeight = basis.getMeasuredHeight

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMeasuredHeightAndState() getMeasuredHeightAndState()]]`
   */
  @inline def measuredHeightAndState = basis.getMeasuredHeightAndState

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMeasuredState() getMeasuredState()]]`
   */
  @inline def measuredState = basis.getMeasuredState

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMeasuredWidth() getMeasuredWidth()]]`
   */
  @inline def measuredWidth = basis.getMeasuredWidth

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMeasuredWidthAndState() getMeasuredWidthAndState()]]`
   */
  @inline def measuredWidthAndState = basis.getMeasuredWidthAndState

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMinimumHeight() getMinimumHeight()]]`
   */
  @inline def minimumHeight = basis.getMinimumHeight

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setMinimumHeight(int) setMinimumHeight(int)]]`
   */
  @inline def minimumHeight(p: Int) = minimumHeight_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setMinimumHeight(int) setMinimumHeight(int)]]`
   */
  @inline def minimumHeight_=(p: Int) = { basis.setMinimumHeight(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getMinimumWidth() getMinimumWidth()]]`
   */
  @inline def minimumWidth = basis.getMinimumWidth

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setMinimumWidth(int) setMinimumWidth(int)]]`
   */
  @inline def minimumWidth(p: Int) = minimumWidth_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setMinimumWidth(int) setMinimumWidth(int)]]`
   */
  @inline def minimumWidth_=(p: Int) = { basis.setMinimumWidth(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getNextFocusDownId() getNextFocusDownId()]]`
   */
  @inline def nextFocusDownId = basis.getNextFocusDownId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusDownId(int) setNextFocusDownId(int)]]`
   */
  @inline def nextFocusDownId(p: Int) = nextFocusDownId_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusDownId(int) setNextFocusDownId(int)]]`
   */
  @inline def nextFocusDownId_=(p: Int) = { basis.setNextFocusDownId(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getNextFocusForwardId() getNextFocusForwardId()]]`
   */
  @inline def nextFocusForwardId = basis.getNextFocusForwardId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusForwardId(int) setNextFocusForwardId(int)]]`
   */
  @inline def nextFocusForwardId(p: Int) = nextFocusForwardId_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusForwardId(int) setNextFocusForwardId(int)]]`
   */
  @inline def nextFocusForwardId_=(p: Int) = { basis.setNextFocusForwardId(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getNextFocusLeftId() getNextFocusLeftId()]]`
   */
  @inline def nextFocusLeftId = basis.getNextFocusLeftId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusLeftId(int) setNextFocusLeftId(int)]]`
   */
  @inline def nextFocusLeftId(p: Int) = nextFocusLeftId_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusLeftId(int) setNextFocusLeftId(int)]]`
   */
  @inline def nextFocusLeftId_=(p: Int) = { basis.setNextFocusLeftId(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getNextFocusRightId() getNextFocusRightId()]]`
   */
  @inline def nextFocusRightId = basis.getNextFocusRightId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusRightId(int) setNextFocusRightId(int)]]`
   */
  @inline def nextFocusRightId(p: Int) = nextFocusRightId_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusRightId(int) setNextFocusRightId(int)]]`
   */
  @inline def nextFocusRightId_=(p: Int) = { basis.setNextFocusRightId(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getNextFocusUpId() getNextFocusUpId()]]`
   */
  @inline def nextFocusUpId = basis.getNextFocusUpId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusUpId(int) setNextFocusUpId(int)]]`
   */
  @inline def nextFocusUpId(p: Int) = nextFocusUpId_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setNextFocusUpId(int) setNextFocusUpId(int)]]`
   */
  @inline def nextFocusUpId_=(p: Int) = { basis.setNextFocusUpId(p); basis }

  @inline def onClickListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onClickListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener) setOnClickListener(android.view.View.OnClickListener)]]`
   */
  @inline def onClickListener(p: android.view.View.OnClickListener) = onClickListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener) setOnClickListener(android.view.View.OnClickListener)]]`
   */
  @inline def onClickListener_=(p: android.view.View.OnClickListener) = { basis.setOnClickListener(p); basis }

  @inline def onCreateContextMenuListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onCreateContextMenuListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener) setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener)]]`
   */
  @inline def onCreateContextMenuListener(p: android.view.View.OnCreateContextMenuListener) = onCreateContextMenuListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener) setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener)]]`
   */
  @inline def onCreateContextMenuListener_=(p: android.view.View.OnCreateContextMenuListener) = { basis.setOnCreateContextMenuListener(p); basis }

  @inline def onDragListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onDragListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnDragListener(android.view.View.OnDragListener) setOnDragListener(android.view.View.OnDragListener)]]`
   */
  @inline def onDragListener(p: android.view.View.OnDragListener) = onDragListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnDragListener(android.view.View.OnDragListener) setOnDragListener(android.view.View.OnDragListener)]]`
   */
  @inline def onDragListener_=(p: android.view.View.OnDragListener) = { basis.setOnDragListener(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getOnFocusChangeListener() getOnFocusChangeListener()]]`
   */
  @inline def onFocusChangeListener = basis.getOnFocusChangeListener

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnFocusChangeListener(android.view.View.OnFocusChangeListener) setOnFocusChangeListener(android.view.View.OnFocusChangeListener)]]`
   */
  @inline def onFocusChangeListener(p: android.view.View.OnFocusChangeListener) = onFocusChangeListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnFocusChangeListener(android.view.View.OnFocusChangeListener) setOnFocusChangeListener(android.view.View.OnFocusChangeListener)]]`
   */
  @inline def onFocusChangeListener_=(p: android.view.View.OnFocusChangeListener) = { basis.setOnFocusChangeListener(p); basis }

  @inline def onGenericMotionListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onGenericMotionListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnGenericMotionListener(android.view.View.OnGenericMotionListener) setOnGenericMotionListener(android.view.View.OnGenericMotionListener)]]`
   */
  @inline def onGenericMotionListener(p: android.view.View.OnGenericMotionListener) = onGenericMotionListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnGenericMotionListener(android.view.View.OnGenericMotionListener) setOnGenericMotionListener(android.view.View.OnGenericMotionListener)]]`
   */
  @inline def onGenericMotionListener_=(p: android.view.View.OnGenericMotionListener) = { basis.setOnGenericMotionListener(p); basis }

  @inline def onHoverListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onHoverListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnHoverListener(android.view.View.OnHoverListener) setOnHoverListener(android.view.View.OnHoverListener)]]`
   */
  @inline def onHoverListener(p: android.view.View.OnHoverListener) = onHoverListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnHoverListener(android.view.View.OnHoverListener) setOnHoverListener(android.view.View.OnHoverListener)]]`
   */
  @inline def onHoverListener_=(p: android.view.View.OnHoverListener) = { basis.setOnHoverListener(p); basis }

  @inline def onKeyListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onKeyListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnKeyListener(android.view.View.OnKeyListener) setOnKeyListener(android.view.View.OnKeyListener)]]`
   */
  @inline def onKeyListener(p: android.view.View.OnKeyListener) = onKeyListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnKeyListener(android.view.View.OnKeyListener) setOnKeyListener(android.view.View.OnKeyListener)]]`
   */
  @inline def onKeyListener_=(p: android.view.View.OnKeyListener) = { basis.setOnKeyListener(p); basis }

  @inline def onLongClickListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onLongClickListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnLongClickListener(android.view.View.OnLongClickListener) setOnLongClickListener(android.view.View.OnLongClickListener)]]`
   */
  @inline def onLongClickListener(p: android.view.View.OnLongClickListener) = onLongClickListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnLongClickListener(android.view.View.OnLongClickListener) setOnLongClickListener(android.view.View.OnLongClickListener)]]`
   */
  @inline def onLongClickListener_=(p: android.view.View.OnLongClickListener) = { basis.setOnLongClickListener(p); basis }

  @inline def onSystemUiVisibilityChangeListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onSystemUiVisibilityChangeListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener) setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener)]]`
   */
  @inline def onSystemUiVisibilityChangeListener(p: android.view.View.OnSystemUiVisibilityChangeListener) = onSystemUiVisibilityChangeListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener) setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener)]]`
   */
  @inline def onSystemUiVisibilityChangeListener_=(p: android.view.View.OnSystemUiVisibilityChangeListener) = { basis.setOnSystemUiVisibilityChangeListener(p); basis }

  @inline def onTouchListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onTouchListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnTouchListener(android.view.View.OnTouchListener) setOnTouchListener(android.view.View.OnTouchListener)]]`
   */
  @inline def onTouchListener(p: android.view.View.OnTouchListener) = onTouchListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOnTouchListener(android.view.View.OnTouchListener) setOnTouchListener(android.view.View.OnTouchListener)]]`
   */
  @inline def onTouchListener_=(p: android.view.View.OnTouchListener) = { basis.setOnTouchListener(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getOverScrollMode() getOverScrollMode()]]`
   */
  @inline def overScrollMode = basis.getOverScrollMode

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOverScrollMode(int) setOverScrollMode(int)]]`
   */
  @inline def overScrollMode(p: Int) = overScrollMode_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setOverScrollMode(int) setOverScrollMode(int)]]`
   */
  @inline def overScrollMode_=(p: Int) = { basis.setOverScrollMode(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getPaddingBottom() getPaddingBottom()]]`
   */
  @inline def paddingBottom = basis.getPaddingBottom

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getPaddingLeft() getPaddingLeft()]]`
   */
  @inline def paddingLeft = basis.getPaddingLeft

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getPaddingRight() getPaddingRight()]]`
   */
  @inline def paddingRight = basis.getPaddingRight

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getPaddingTop() getPaddingTop()]]`
   */
  @inline def paddingTop = basis.getPaddingTop

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getParent() getParent()]]`
   */
  @inline def parent = basis.getParent

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getParentForAccessibility() getParentForAccessibility()]]`
   */
  @inline def parentForAccessibility = basis.getParentForAccessibility

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getPivotX() getPivotX()]]`
   */
  @inline def pivotX = basis.getPivotX

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setPivotX(float) setPivotX(float)]]`
   */
  @inline def pivotX(p: Float) = pivotX_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setPivotX(float) setPivotX(float)]]`
   */
  @inline def pivotX_=(p: Float) = { basis.setPivotX(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getPivotY() getPivotY()]]`
   */
  @inline def pivotY = basis.getPivotY

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setPivotY(float) setPivotY(float)]]`
   */
  @inline def pivotY(p: Float) = pivotY_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setPivotY(float) setPivotY(float)]]`
   */
  @inline def pivotY_=(p: Float) = { basis.setPivotY(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isPressed() isPressed()]]`
   */
  @inline def pressed = basis.isPressed

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setPressed(boolean) setPressed(boolean)]]`
   */
  @inline def pressed(p: Boolean) = pressed_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setPressed(boolean) setPressed(boolean)]]`
   */
  @inline def pressed_=(p: Boolean) = { basis.setPressed(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getResources() getResources()]]`
   */
  @inline def resources = basis.getResources

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getRight() getRight()]]`
   */
  @inline def right = basis.getRight

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRight(int) setRight(int)]]`
   */
  @inline def right(p: Int) = right_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRight(int) setRight(int)]]`
   */
  @inline def right_=(p: Int) = { basis.setRight(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getRootView() getRootView()]]`
   */
  @inline def rootView = basis.getRootView

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getRotation() getRotation()]]`
   */
  @inline def rotation = basis.getRotation

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRotation(float) setRotation(float)]]`
   */
  @inline def rotation(p: Float) = rotation_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRotation(float) setRotation(float)]]`
   */
  @inline def rotation_=(p: Float) = { basis.setRotation(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getRotationX() getRotationX()]]`
   */
  @inline def rotationX = basis.getRotationX

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRotationX(float) setRotationX(float)]]`
   */
  @inline def rotationX(p: Float) = rotationX_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRotationX(float) setRotationX(float)]]`
   */
  @inline def rotationX_=(p: Float) = { basis.setRotationX(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getRotationY() getRotationY()]]`
   */
  @inline def rotationY = basis.getRotationY

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRotationY(float) setRotationY(float)]]`
   */
  @inline def rotationY(p: Float) = rotationY_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setRotationY(float) setRotationY(float)]]`
   */
  @inline def rotationY_=(p: Float) = { basis.setRotationY(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isSaveEnabled() isSaveEnabled()]]`
   */
  @inline def saveEnabled = basis.isSaveEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSaveEnabled(boolean) setSaveEnabled(boolean)]]`
   */
  @inline def saveEnabled(p: Boolean) = saveEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSaveEnabled(boolean) setSaveEnabled(boolean)]]`
   */
  @inline def saveEnabled_=(p: Boolean) = { basis.setSaveEnabled(p); basis }

  @inline def enableSave() = { basis.setSaveEnabled(true); basis }
  @inline def disableSave() = { basis.setSaveEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isSaveFromParentEnabled() isSaveFromParentEnabled()]]`
   */
  @inline def saveFromParentEnabled = basis.isSaveFromParentEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSaveFromParentEnabled(boolean) setSaveFromParentEnabled(boolean)]]`
   */
  @inline def saveFromParentEnabled(p: Boolean) = saveFromParentEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSaveFromParentEnabled(boolean) setSaveFromParentEnabled(boolean)]]`
   */
  @inline def saveFromParentEnabled_=(p: Boolean) = { basis.setSaveFromParentEnabled(p); basis }

  @inline def enableSaveFromParent() = { basis.setSaveFromParentEnabled(true); basis }
  @inline def disableSaveFromParent() = { basis.setSaveFromParentEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScaleX() getScaleX()]]`
   */
  @inline def scaleX = basis.getScaleX

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScaleX(float) setScaleX(float)]]`
   */
  @inline def scaleX(p: Float) = scaleX_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScaleX(float) setScaleX(float)]]`
   */
  @inline def scaleX_=(p: Float) = { basis.setScaleX(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScaleY() getScaleY()]]`
   */
  @inline def scaleY = basis.getScaleY

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScaleY(float) setScaleY(float)]]`
   */
  @inline def scaleY(p: Float) = scaleY_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScaleY(float) setScaleY(float)]]`
   */
  @inline def scaleY_=(p: Float) = { basis.setScaleY(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScrollBarDefaultDelayBeforeFade() getScrollBarDefaultDelayBeforeFade()]]`
   */
  @inline def scrollBarDefaultDelayBeforeFade = basis.getScrollBarDefaultDelayBeforeFade

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarDefaultDelayBeforeFade(int) setScrollBarDefaultDelayBeforeFade(int)]]`
   */
  @inline def scrollBarDefaultDelayBeforeFade(p: Int) = scrollBarDefaultDelayBeforeFade_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarDefaultDelayBeforeFade(int) setScrollBarDefaultDelayBeforeFade(int)]]`
   */
  @inline def scrollBarDefaultDelayBeforeFade_=(p: Int) = { basis.setScrollBarDefaultDelayBeforeFade(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScrollBarFadeDuration() getScrollBarFadeDuration()]]`
   */
  @inline def scrollBarFadeDuration = basis.getScrollBarFadeDuration

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarFadeDuration(int) setScrollBarFadeDuration(int)]]`
   */
  @inline def scrollBarFadeDuration(p: Int) = scrollBarFadeDuration_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarFadeDuration(int) setScrollBarFadeDuration(int)]]`
   */
  @inline def scrollBarFadeDuration_=(p: Int) = { basis.setScrollBarFadeDuration(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScrollBarSize() getScrollBarSize()]]`
   */
  @inline def scrollBarSize = basis.getScrollBarSize

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarSize(int) setScrollBarSize(int)]]`
   */
  @inline def scrollBarSize(p: Int) = scrollBarSize_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarSize(int) setScrollBarSize(int)]]`
   */
  @inline def scrollBarSize_=(p: Int) = { basis.setScrollBarSize(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScrollBarStyle() getScrollBarStyle()]]`
   */
  @inline def scrollBarStyle = basis.getScrollBarStyle

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarStyle(int) setScrollBarStyle(int)]]`
   */
  @inline def scrollBarStyle(p: Int) = scrollBarStyle_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollBarStyle(int) setScrollBarStyle(int)]]`
   */
  @inline def scrollBarStyle_=(p: Int) = { basis.setScrollBarStyle(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isScrollContainer() isScrollContainer()]]`
   */
  @inline def scrollContainer = basis.isScrollContainer

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollContainer(boolean) setScrollContainer(boolean)]]`
   */
  @inline def scrollContainer(p: Boolean) = scrollContainer_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollContainer(boolean) setScrollContainer(boolean)]]`
   */
  @inline def scrollContainer_=(p: Boolean) = { basis.setScrollContainer(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScrollX() getScrollX()]]`
   */
  @inline def scrollX = basis.getScrollX

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollX(int) setScrollX(int)]]`
   */
  @inline def scrollX(p: Int) = scrollX_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollX(int) setScrollX(int)]]`
   */
  @inline def scrollX_=(p: Int) = { basis.setScrollX(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getScrollY() getScrollY()]]`
   */
  @inline def scrollY = basis.getScrollY

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollY(int) setScrollY(int)]]`
   */
  @inline def scrollY(p: Int) = scrollY_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollY(int) setScrollY(int)]]`
   */
  @inline def scrollY_=(p: Int) = { basis.setScrollY(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isScrollbarFadingEnabled() isScrollbarFadingEnabled()]]`
   */
  @inline def scrollbarFadingEnabled = basis.isScrollbarFadingEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollbarFadingEnabled(boolean) setScrollbarFadingEnabled(boolean)]]`
   */
  @inline def scrollbarFadingEnabled(p: Boolean) = scrollbarFadingEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setScrollbarFadingEnabled(boolean) setScrollbarFadingEnabled(boolean)]]`
   */
  @inline def scrollbarFadingEnabled_=(p: Boolean) = { basis.setScrollbarFadingEnabled(p); basis }

  @inline def enableScrollbarFading() = { basis.setScrollbarFadingEnabled(true); basis }
  @inline def disableScrollbarFading() = { basis.setScrollbarFadingEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isSelected() isSelected()]]`
   */
  @inline def selected = basis.isSelected

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSelected(boolean) setSelected(boolean)]]`
   */
  @inline def selected(p: Boolean) = selected_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSelected(boolean) setSelected(boolean)]]`
   */
  @inline def selected_=(p: Boolean) = { basis.setSelected(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getSolidColor() getSolidColor()]]`
   */
  @inline def solidColor = basis.getSolidColor

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isSoundEffectsEnabled() isSoundEffectsEnabled()]]`
   */
  @inline def soundEffectsEnabled = basis.isSoundEffectsEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSoundEffectsEnabled(boolean) setSoundEffectsEnabled(boolean)]]`
   */
  @inline def soundEffectsEnabled(p: Boolean) = soundEffectsEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSoundEffectsEnabled(boolean) setSoundEffectsEnabled(boolean)]]`
   */
  @inline def soundEffectsEnabled_=(p: Boolean) = { basis.setSoundEffectsEnabled(p); basis }

  @inline def enableSoundEffects() = { basis.setSoundEffectsEnabled(true); basis }
  @inline def disableSoundEffects() = { basis.setSoundEffectsEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getSystemUiVisibility() getSystemUiVisibility()]]`
   */
  @inline def systemUiVisibility = basis.getSystemUiVisibility

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int) setSystemUiVisibility(int)]]`
   */
  @inline def systemUiVisibility(p: Int) = systemUiVisibility_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int) setSystemUiVisibility(int)]]`
   */
  @inline def systemUiVisibility_=(p: Int) = { basis.setSystemUiVisibility(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getTag() getTag()]]`
   */
  @inline def tag = basis.getTag

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTag(java.lang.Object) setTag(java.lang.Object)]]`
   */
  @inline def tag(p: Any) = tag_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTag(java.lang.Object) setTag(java.lang.Object)]]`
   */
  @inline def tag_=(p: Any) = { basis.setTag(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getTop() getTop()]]`
   */
  @inline def top = basis.getTop

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTop(int) setTop(int)]]`
   */
  @inline def top(p: Int) = top_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTop(int) setTop(int)]]`
   */
  @inline def top_=(p: Int) = { basis.setTop(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getTouchDelegate() getTouchDelegate()]]`
   */
  @inline def touchDelegate = basis.getTouchDelegate

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTouchDelegate(android.view.TouchDelegate) setTouchDelegate(android.view.TouchDelegate)]]`
   */
  @inline def touchDelegate(p: android.view.TouchDelegate) = touchDelegate_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTouchDelegate(android.view.TouchDelegate) setTouchDelegate(android.view.TouchDelegate)]]`
   */
  @inline def touchDelegate_=(p: android.view.TouchDelegate) = { basis.setTouchDelegate(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getTouchables() getTouchables()]]`
   */
  @inline def touchables = basis.getTouchables

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getTranslationX() getTranslationX()]]`
   */
  @inline def translationX = basis.getTranslationX

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTranslationX(float) setTranslationX(float)]]`
   */
  @inline def translationX(p: Float) = translationX_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTranslationX(float) setTranslationX(float)]]`
   */
  @inline def translationX_=(p: Float) = { basis.setTranslationX(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getTranslationY() getTranslationY()]]`
   */
  @inline def translationY = basis.getTranslationY

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTranslationY(float) setTranslationY(float)]]`
   */
  @inline def translationY(p: Float) = translationY_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setTranslationY(float) setTranslationY(float)]]`
   */
  @inline def translationY_=(p: Float) = { basis.setTranslationY(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isVerticalFadingEdgeEnabled() isVerticalFadingEdgeEnabled()]]`
   */
  @inline def verticalFadingEdgeEnabled = basis.isVerticalFadingEdgeEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVerticalFadingEdgeEnabled(boolean) setVerticalFadingEdgeEnabled(boolean)]]`
   */
  @inline def verticalFadingEdgeEnabled(p: Boolean) = verticalFadingEdgeEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVerticalFadingEdgeEnabled(boolean) setVerticalFadingEdgeEnabled(boolean)]]`
   */
  @inline def verticalFadingEdgeEnabled_=(p: Boolean) = { basis.setVerticalFadingEdgeEnabled(p); basis }

  @inline def enableVerticalFadingEdge() = { basis.setVerticalFadingEdgeEnabled(true); basis }
  @inline def disableVerticalFadingEdge() = { basis.setVerticalFadingEdgeEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getVerticalFadingEdgeLength() getVerticalFadingEdgeLength()]]`
   */
  @inline def verticalFadingEdgeLength = basis.getVerticalFadingEdgeLength

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#isVerticalScrollBarEnabled() isVerticalScrollBarEnabled()]]`
   */
  @inline def verticalScrollBarEnabled = basis.isVerticalScrollBarEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVerticalScrollBarEnabled(boolean) setVerticalScrollBarEnabled(boolean)]]`
   */
  @inline def verticalScrollBarEnabled(p: Boolean) = verticalScrollBarEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVerticalScrollBarEnabled(boolean) setVerticalScrollBarEnabled(boolean)]]`
   */
  @inline def verticalScrollBarEnabled_=(p: Boolean) = { basis.setVerticalScrollBarEnabled(p); basis }

  @inline def enableVerticalScrollBar() = { basis.setVerticalScrollBarEnabled(true); basis }
  @inline def disableVerticalScrollBar() = { basis.setVerticalScrollBarEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getVerticalScrollbarPosition() getVerticalScrollbarPosition()]]`
   */
  @inline def verticalScrollbarPosition = basis.getVerticalScrollbarPosition

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVerticalScrollbarPosition(int) setVerticalScrollbarPosition(int)]]`
   */
  @inline def verticalScrollbarPosition(p: Int) = verticalScrollbarPosition_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVerticalScrollbarPosition(int) setVerticalScrollbarPosition(int)]]`
   */
  @inline def verticalScrollbarPosition_=(p: Int) = { basis.setVerticalScrollbarPosition(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getVerticalScrollbarWidth() getVerticalScrollbarWidth()]]`
   */
  @inline def verticalScrollbarWidth = basis.getVerticalScrollbarWidth

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getViewTreeObserver() getViewTreeObserver()]]`
   */
  @inline def viewTreeObserver = basis.getViewTreeObserver

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getVisibility() getVisibility()]]`
   */
  @inline def visibility = basis.getVisibility

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVisibility(int) setVisibility(int)]]`
   */
  @inline def visibility(p: Int) = visibility_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setVisibility(int) setVisibility(int)]]`
   */
  @inline def visibility_=(p: Int) = { basis.setVisibility(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getWidth() getWidth()]]`
   */
  @inline def width = basis.getWidth

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setWillNotCacheDrawing(boolean) setWillNotCacheDrawing(boolean)]]`
   */
  @inline def willNotCacheDrawing(p: Boolean) = willNotCacheDrawing_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setWillNotCacheDrawing(boolean) setWillNotCacheDrawing(boolean)]]`
   */
  @inline def willNotCacheDrawing_=(p: Boolean) = { basis.setWillNotCacheDrawing(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setWillNotDraw(boolean) setWillNotDraw(boolean)]]`
   */
  @inline def willNotDraw(p: Boolean) = willNotDraw_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setWillNotDraw(boolean) setWillNotDraw(boolean)]]`
   */
  @inline def willNotDraw_=(p: Boolean) = { basis.setWillNotDraw(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getWindowSystemUiVisibility() getWindowSystemUiVisibility()]]`
   */
  @inline def windowSystemUiVisibility = basis.getWindowSystemUiVisibility

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getWindowToken() getWindowToken()]]`
   */
  @inline def windowToken = basis.getWindowToken

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getWindowVisibility() getWindowVisibility()]]`
   */
  @inline def windowVisibility = basis.getWindowVisibility

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getX() getX()]]`
   */
  @inline def x = basis.getX

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setX(float) setX(float)]]`
   */
  @inline def x(p: Float) = x_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setX(float) setX(float)]]`
   */
  @inline def x_=(p: Float) = { basis.setX(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#getY() getY()]]`
   */
  @inline def y = basis.getY

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setY(float) setY(float)]]`
   */
  @inline def y(p: Float) = y_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/View.html#setY(float) setY(float)]]`
   */
  @inline def y_=(p: Float) = { basis.setY(p); basis }

  @inline def onClick[U](f: android.view.View => U): This = {
    basis.setOnClickListener(new android.view.View.OnClickListener {
      def onClick(p: android.view.View): Unit = { f(p) }
    })
    basis
  }

  @inline def onClick[U](f: => U): This = {
    basis.setOnClickListener(new android.view.View.OnClickListener {
      def onClick(p: android.view.View): Unit = { f }
    })
    basis
  }

  @inline def onCreateContextMenu[U](f: (android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo) => U): This = {
    basis.setOnCreateContextMenuListener(new android.view.View.OnCreateContextMenuListener {
      def onCreateContextMenu(p1: android.view.ContextMenu, p2: android.view.View, p3: android.view.ContextMenu.ContextMenuInfo): Unit = { f(p1, p2, p3) }
    })
    basis
  }

  @inline def onCreateContextMenu[U](f: => U): This = {
    basis.setOnCreateContextMenuListener(new android.view.View.OnCreateContextMenuListener {
      def onCreateContextMenu(p1: android.view.ContextMenu, p2: android.view.View, p3: android.view.ContextMenu.ContextMenuInfo): Unit = { f }
    })
    basis
  }

  @inline def onDrag(f: (android.view.View, android.view.DragEvent) => Boolean): This = {
    basis.setOnDragListener(new android.view.View.OnDragListener {
      def onDrag(p1: android.view.View, p2: android.view.DragEvent): Boolean = { f(p1, p2) }
    })
    basis
  }

  @inline def onDrag(f: => Boolean): This = {
    basis.setOnDragListener(new android.view.View.OnDragListener {
      def onDrag(p1: android.view.View, p2: android.view.DragEvent): Boolean = { f }
    })
    basis
  }

  @inline def onFocusChange[U](f: (android.view.View, Boolean) => U): This = {
    basis.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener {
      def onFocusChange(p1: android.view.View, p2: Boolean): Unit = { f(p1, p2) }
    })
    basis
  }

  @inline def onFocusChange[U](f: => U): This = {
    basis.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener {
      def onFocusChange(p1: android.view.View, p2: Boolean): Unit = { f }
    })
    basis
  }

  @inline def onGenericMotion(f: (android.view.View, android.view.MotionEvent) => Boolean): This = {
    basis.setOnGenericMotionListener(new android.view.View.OnGenericMotionListener {
      def onGenericMotion(p1: android.view.View, p2: android.view.MotionEvent): Boolean = { f(p1, p2) }
    })
    basis
  }

  @inline def onGenericMotion(f: => Boolean): This = {
    basis.setOnGenericMotionListener(new android.view.View.OnGenericMotionListener {
      def onGenericMotion(p1: android.view.View, p2: android.view.MotionEvent): Boolean = { f }
    })
    basis
  }

  @inline def onHover(f: (android.view.View, android.view.MotionEvent) => Boolean): This = {
    basis.setOnHoverListener(new android.view.View.OnHoverListener {
      def onHover(p1: android.view.View, p2: android.view.MotionEvent): Boolean = { f(p1, p2) }
    })
    basis
  }

  @inline def onHover(f: => Boolean): This = {
    basis.setOnHoverListener(new android.view.View.OnHoverListener {
      def onHover(p1: android.view.View, p2: android.view.MotionEvent): Boolean = { f }
    })
    basis
  }

  @inline def onKey(f: (android.view.View, Int, android.view.KeyEvent) => Boolean): This = {
    basis.setOnKeyListener(new android.view.View.OnKeyListener {
      def onKey(p1: android.view.View, p2: Int, p3: android.view.KeyEvent): Boolean = { f(p1, p2, p3) }
    })
    basis
  }

  @inline def onKey(f: => Boolean): This = {
    basis.setOnKeyListener(new android.view.View.OnKeyListener {
      def onKey(p1: android.view.View, p2: Int, p3: android.view.KeyEvent): Boolean = { f }
    })
    basis
  }

  @inline def onLayoutChange[U](f: (android.view.View, Int, Int, Int, Int, Int, Int, Int, Int) => U): This = {
    basis.addOnLayoutChangeListener(new android.view.View.OnLayoutChangeListener {
      def onLayoutChange(p1: android.view.View, p2: Int, p3: Int, p4: Int, p5: Int, p6: Int, p7: Int, p8: Int, p9: Int): Unit = { f(p1, p2, p3, p4, p5, p6, p7, p8, p9) }
    })
    basis
  }

  @inline def onLayoutChange[U](f: => U): This = {
    basis.addOnLayoutChangeListener(new android.view.View.OnLayoutChangeListener {
      def onLayoutChange(p1: android.view.View, p2: Int, p3: Int, p4: Int, p5: Int, p6: Int, p7: Int, p8: Int, p9: Int): Unit = { f }
    })
    basis
  }

  @inline def onLongClick(f: android.view.View => Boolean): This = {
    basis.setOnLongClickListener(new android.view.View.OnLongClickListener {
      def onLongClick(p: android.view.View): Boolean = { f(p) }
    })
    basis
  }

  @inline def onLongClick(f: => Boolean): This = {
    basis.setOnLongClickListener(new android.view.View.OnLongClickListener {
      def onLongClick(p: android.view.View): Boolean = { f }
    })
    basis
  }

  @inline def onSystemUiVisibilityChange[U](f: Int => U): This = {
    basis.setOnSystemUiVisibilityChangeListener(new android.view.View.OnSystemUiVisibilityChangeListener {
      def onSystemUiVisibilityChange(p: Int): Unit = { f(p) }
    })
    basis
  }

  @inline def onSystemUiVisibilityChange[U](f: => U): This = {
    basis.setOnSystemUiVisibilityChangeListener(new android.view.View.OnSystemUiVisibilityChangeListener {
      def onSystemUiVisibilityChange(p: Int): Unit = { f }
    })
    basis
  }

  @inline def onTouch(f: (android.view.View, android.view.MotionEvent) => Boolean): This = {
    basis.setOnTouchListener(new android.view.View.OnTouchListener {
      def onTouch(p1: android.view.View, p2: android.view.MotionEvent): Boolean = { f(p1, p2) }
    })
    basis
  }

  @inline def onTouch(f: => Boolean): This = {
    basis.setOnTouchListener(new android.view.View.OnTouchListener {
      def onTouch(p1: android.view.View, p2: android.view.MotionEvent): Boolean = { f }
    })
    basis
  }

  @inline def onViewAttachedToWindow[U](f: android.view.View => U): This = {
    basis.addOnAttachStateChangeListener(new android.view.View.OnAttachStateChangeListener {
      def onViewAttachedToWindow(p: android.view.View): Unit = { f(p) }
      def onViewDetachedFromWindow(p: android.view.View): Unit = {}
    })
    basis
  }

  @inline def onViewAttachedToWindow[U](f: => U): This = {
    basis.addOnAttachStateChangeListener(new android.view.View.OnAttachStateChangeListener {
      def onViewAttachedToWindow(p: android.view.View): Unit = { f }
      def onViewDetachedFromWindow(p: android.view.View): Unit = {}
    })
    basis
  }

  @inline def onViewDetachedFromWindow[U](f: android.view.View => U): This = {
    basis.addOnAttachStateChangeListener(new android.view.View.OnAttachStateChangeListener {
      def onViewAttachedToWindow(p: android.view.View): Unit = {}
      def onViewDetachedFromWindow(p: android.view.View): Unit = { f(p) }
    })
    basis
  }

  @inline def onViewDetachedFromWindow[U](f: => U): This = {
    basis.addOnAttachStateChangeListener(new android.view.View.OnAttachStateChangeListener {
      def onViewAttachedToWindow(p: android.view.View): Unit = {}
      def onViewDetachedFromWindow(p: android.view.View): Unit = { f }
    })
    basis
  }

}

/**
 * Automatically generated concrete helper class of `[[https://developer.android.com/reference/android/view/View.html android.view.View]]`.
 */
class SView()(implicit context: android.content.Context, parentVGroup: TraitViewGroup[_] = null)
  extends android.view.View(context) with TraitView[SView] {

  def basis = this
  override val parentViewGroup = parentVGroup

}

object SView {
  def apply[LP <: ViewGroupLayoutParams[_, SView]]()(implicit context: android.content.Context, defaultLayoutParam: SView => LP): SView = {
    val v = new SView
    v.<<.parent.+=(v)
    v
  }

}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/ViewGroup.html android.view.ViewGroup]]`.
 */
class RichViewGroup[This <: android.view.ViewGroup](val basis: This) extends TraitViewGroup[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/ViewGroup.html android.view.ViewGroup]]`. This contains several property accessors.
 */
trait TraitViewGroup[This <: android.view.ViewGroup] extends TraitView[This] {

  implicit val parentVG = this

  def applyStyle(v: View): View = {
    var viw = v
    if (parentViewGroup != null) viw = parentViewGroup.applyStyle(viw)
    styles.foreach { st =>
      if (st.isDefinedAt(viw)) viw = st(viw)
    }
    viw
  }

  def +=(v: View) = {
    var viw = v
    viw = applyStyle(viw)
    basis.addView(viw)
    basis
  }

  var styles = Vector[View PartialFunction View]()

  def style(stl: View PartialFunction View) = {
    styles :+= stl
    basis
  }

  // Fix https://github.com/pocorall/scaloid/issues/112
  def debug(str: String)(implicit tag: LoggerTag) = org.scaloid.common.debug(str)(tag)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setAddStatesFromChildren(boolean) setAddStatesFromChildren(boolean)]]`
   */
  @inline def addStatesFromChildren(p: Boolean) = addStatesFromChildren_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setAddStatesFromChildren(boolean) setAddStatesFromChildren(boolean)]]`
   */
  @inline def addStatesFromChildren_=(p: Boolean) = { basis.setAddStatesFromChildren(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#isAlwaysDrawnWithCacheEnabled() isAlwaysDrawnWithCacheEnabled()]]`
   */
  @inline def alwaysDrawnWithCacheEnabled = basis.isAlwaysDrawnWithCacheEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setAlwaysDrawnWithCacheEnabled(boolean) setAlwaysDrawnWithCacheEnabled(boolean)]]`
   */
  @inline def alwaysDrawnWithCacheEnabled(p: Boolean) = alwaysDrawnWithCacheEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setAlwaysDrawnWithCacheEnabled(boolean) setAlwaysDrawnWithCacheEnabled(boolean)]]`
   */
  @inline def alwaysDrawnWithCacheEnabled_=(p: Boolean) = { basis.setAlwaysDrawnWithCacheEnabled(p); basis }

  @inline def enableAlwaysDrawnWithCache() = { basis.setAlwaysDrawnWithCacheEnabled(true); basis }
  @inline def disableAlwaysDrawnWithCache() = { basis.setAlwaysDrawnWithCacheEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#isAnimationCacheEnabled() isAnimationCacheEnabled()]]`
   */
  @inline def animationCacheEnabled = basis.isAnimationCacheEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setAnimationCacheEnabled(boolean) setAnimationCacheEnabled(boolean)]]`
   */
  @inline def animationCacheEnabled(p: Boolean) = animationCacheEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setAnimationCacheEnabled(boolean) setAnimationCacheEnabled(boolean)]]`
   */
  @inline def animationCacheEnabled_=(p: Boolean) = { basis.setAnimationCacheEnabled(p); basis }

  @inline def enableAnimationCache() = { basis.setAnimationCacheEnabled(true); basis }
  @inline def disableAnimationCache() = { basis.setAnimationCacheEnabled(false); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getChildCount() getChildCount()]]`
   */
  @inline def childCount = basis.getChildCount

  @inline def clipChildren(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'clipChildren'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setClipChildren(boolean) setClipChildren(boolean)]]`
   */
  @inline def clipChildren(p: Boolean) = clipChildren_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setClipChildren(boolean) setClipChildren(boolean)]]`
   */
  @inline def clipChildren_=(p: Boolean) = { basis.setClipChildren(p); basis }

  @inline def clipToPadding(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'clipToPadding'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setClipToPadding(boolean) setClipToPadding(boolean)]]`
   */
  @inline def clipToPadding(p: Boolean) = clipToPadding_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setClipToPadding(boolean) setClipToPadding(boolean)]]`
   */
  @inline def clipToPadding_=(p: Boolean) = { basis.setClipToPadding(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getDescendantFocusability() getDescendantFocusability()]]`
   */
  @inline def descendantFocusability = basis.getDescendantFocusability

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setDescendantFocusability(int) setDescendantFocusability(int)]]`
   */
  @inline def descendantFocusability(p: Int) = descendantFocusability_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setDescendantFocusability(int) setDescendantFocusability(int)]]`
   */
  @inline def descendantFocusability_=(p: Int) = { basis.setDescendantFocusability(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getFocusedChild() getFocusedChild()]]`
   */
  @inline def focusedChild = basis.getFocusedChild

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getLayoutAnimation() getLayoutAnimation()]]`
   */
  @inline def layoutAnimation = basis.getLayoutAnimation

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setLayoutAnimation(android.view.animation.LayoutAnimationController) setLayoutAnimation(android.view.animation.LayoutAnimationController)]]`
   */
  @inline def layoutAnimation(p: android.view.animation.LayoutAnimationController) = layoutAnimation_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setLayoutAnimation(android.view.animation.LayoutAnimationController) setLayoutAnimation(android.view.animation.LayoutAnimationController)]]`
   */
  @inline def layoutAnimation_=(p: android.view.animation.LayoutAnimationController) = { basis.setLayoutAnimation(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getLayoutAnimationListener() getLayoutAnimationListener()]]`
   */
  @inline def layoutAnimationListener = basis.getLayoutAnimationListener

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setLayoutAnimationListener(android.view.animation.Animation.AnimationListener) setLayoutAnimationListener(android.view.animation.Animation.AnimationListener)]]`
   */
  @inline def layoutAnimationListener(p: android.view.animation.Animation.AnimationListener) = layoutAnimationListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setLayoutAnimationListener(android.view.animation.Animation.AnimationListener) setLayoutAnimationListener(android.view.animation.Animation.AnimationListener)]]`
   */
  @inline def layoutAnimationListener_=(p: android.view.animation.Animation.AnimationListener) = { basis.setLayoutAnimationListener(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getLayoutTransition() getLayoutTransition()]]`
   */
  @inline def layoutTransition = basis.getLayoutTransition

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setLayoutTransition(android.animation.LayoutTransition) setLayoutTransition(android.animation.LayoutTransition)]]`
   */
  @inline def layoutTransition(p: android.animation.LayoutTransition) = layoutTransition_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setLayoutTransition(android.animation.LayoutTransition) setLayoutTransition(android.animation.LayoutTransition)]]`
   */
  @inline def layoutTransition_=(p: android.animation.LayoutTransition) = { basis.setLayoutTransition(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#isMotionEventSplittingEnabled() isMotionEventSplittingEnabled()]]`
   */
  @inline def motionEventSplittingEnabled = basis.isMotionEventSplittingEnabled

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setMotionEventSplittingEnabled(boolean) setMotionEventSplittingEnabled(boolean)]]`
   */
  @inline def motionEventSplittingEnabled(p: Boolean) = motionEventSplittingEnabled_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setMotionEventSplittingEnabled(boolean) setMotionEventSplittingEnabled(boolean)]]`
   */
  @inline def motionEventSplittingEnabled_=(p: Boolean) = { basis.setMotionEventSplittingEnabled(p); basis }

  @inline def enableMotionEventSplitting() = { basis.setMotionEventSplittingEnabled(true); basis }
  @inline def disableMotionEventSplitting() = { basis.setMotionEventSplittingEnabled(false); basis }

  @inline def onHierarchyChangeListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onHierarchyChangeListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener) setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener)]]`
   */
  @inline def onHierarchyChangeListener(p: android.view.ViewGroup.OnHierarchyChangeListener) = onHierarchyChangeListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener) setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener)]]`
   */
  @inline def onHierarchyChangeListener_=(p: android.view.ViewGroup.OnHierarchyChangeListener) = { basis.setOnHierarchyChangeListener(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#getPersistentDrawingCache() getPersistentDrawingCache()]]`
   */
  @inline def persistentDrawingCache = basis.getPersistentDrawingCache

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setPersistentDrawingCache(int) setPersistentDrawingCache(int)]]`
   */
  @inline def persistentDrawingCache(p: Int) = persistentDrawingCache_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewGroup.html#setPersistentDrawingCache(int) setPersistentDrawingCache(int)]]`
   */
  @inline def persistentDrawingCache_=(p: Int) = { basis.setPersistentDrawingCache(p); basis }

  @inline def onAnimationEnd[U](f: android.view.animation.Animation => U): This = {
    basis.setLayoutAnimationListener(new android.view.animation.Animation.AnimationListener {
      def onAnimationEnd(p: android.view.animation.Animation): Unit = { f(p) }
      def onAnimationRepeat(p: android.view.animation.Animation): Unit = {}
      def onAnimationStart(p: android.view.animation.Animation): Unit = {}
    })
    basis
  }

  @inline def onAnimationEnd[U](f: => U): This = {
    basis.setLayoutAnimationListener(new android.view.animation.Animation.AnimationListener {
      def onAnimationEnd(p: android.view.animation.Animation): Unit = { f }
      def onAnimationRepeat(p: android.view.animation.Animation): Unit = {}
      def onAnimationStart(p: android.view.animation.Animation): Unit = {}
    })
    basis
  }

  @inline def onAnimationRepeat[U](f: android.view.animation.Animation => U): This = {
    basis.setLayoutAnimationListener(new android.view.animation.Animation.AnimationListener {
      def onAnimationEnd(p: android.view.animation.Animation): Unit = {}
      def onAnimationRepeat(p: android.view.animation.Animation): Unit = { f(p) }
      def onAnimationStart(p: android.view.animation.Animation): Unit = {}
    })
    basis
  }

  @inline def onAnimationRepeat[U](f: => U): This = {
    basis.setLayoutAnimationListener(new android.view.animation.Animation.AnimationListener {
      def onAnimationEnd(p: android.view.animation.Animation): Unit = {}
      def onAnimationRepeat(p: android.view.animation.Animation): Unit = { f }
      def onAnimationStart(p: android.view.animation.Animation): Unit = {}
    })
    basis
  }

  @inline def onAnimationStart[U](f: android.view.animation.Animation => U): This = {
    basis.setLayoutAnimationListener(new android.view.animation.Animation.AnimationListener {
      def onAnimationEnd(p: android.view.animation.Animation): Unit = {}
      def onAnimationRepeat(p: android.view.animation.Animation): Unit = {}
      def onAnimationStart(p: android.view.animation.Animation): Unit = { f(p) }
    })
    basis
  }

  @inline def onAnimationStart[U](f: => U): This = {
    basis.setLayoutAnimationListener(new android.view.animation.Animation.AnimationListener {
      def onAnimationEnd(p: android.view.animation.Animation): Unit = {}
      def onAnimationRepeat(p: android.view.animation.Animation): Unit = {}
      def onAnimationStart(p: android.view.animation.Animation): Unit = { f }
    })
    basis
  }

  @inline def onChildViewAdded[U](f: (android.view.View, android.view.View) => U): This = {
    basis.setOnHierarchyChangeListener(new android.view.ViewGroup.OnHierarchyChangeListener {
      def onChildViewAdded(p1: android.view.View, p2: android.view.View): Unit = { f(p1, p2) }
      def onChildViewRemoved(p1: android.view.View, p2: android.view.View): Unit = {}
    })
    basis
  }

  @inline def onChildViewAdded[U](f: => U): This = {
    basis.setOnHierarchyChangeListener(new android.view.ViewGroup.OnHierarchyChangeListener {
      def onChildViewAdded(p1: android.view.View, p2: android.view.View): Unit = { f }
      def onChildViewRemoved(p1: android.view.View, p2: android.view.View): Unit = {}
    })
    basis
  }

  @inline def onChildViewRemoved[U](f: (android.view.View, android.view.View) => U): This = {
    basis.setOnHierarchyChangeListener(new android.view.ViewGroup.OnHierarchyChangeListener {
      def onChildViewAdded(p1: android.view.View, p2: android.view.View): Unit = {}
      def onChildViewRemoved(p1: android.view.View, p2: android.view.View): Unit = { f(p1, p2) }
    })
    basis
  }

  @inline def onChildViewRemoved[U](f: => U): This = {
    basis.setOnHierarchyChangeListener(new android.view.ViewGroup.OnHierarchyChangeListener {
      def onChildViewAdded(p1: android.view.View, p2: android.view.View): Unit = {}
      def onChildViewRemoved(p1: android.view.View, p2: android.view.View): Unit = { f }
    })
    basis
  }

}

trait ViewGroupLayoutParams[+This <: ViewGroupLayoutParams[_, _], V <: View] extends ViewGroup.LayoutParams {
  def basis: This

  /**
   * A shorthand for <<(MATCH_PARENT, MATCH_PARENT)
   */
  def fill = {
    width = ViewGroup.LayoutParams.MATCH_PARENT
    height = ViewGroup.LayoutParams.MATCH_PARENT
    basis
  }
  /**
   * A shorthand for <<(WRAP_CONTENT, WRAP_CONTENT)
   */
  def wrap = {
    width = ViewGroup.LayoutParams.WRAP_CONTENT
    height = ViewGroup.LayoutParams.WRAP_CONTENT
    basis
  }
  /**
   * A shorthand for <<(MATCH_PARENT, WRAP_CONTENT)
   */
  def fw = {
    width = ViewGroup.LayoutParams.MATCH_PARENT
    height = ViewGroup.LayoutParams.WRAP_CONTENT
    basis
  }
  /**
   * A shorthand for <<(WRAP_CONTENT, MATCH_PARENT)
   */
  def wf = {
    width = ViewGroup.LayoutParams.WRAP_CONTENT
    height = ViewGroup.LayoutParams.MATCH_PARENT
    basis
  }

  def parent: TraitViewGroup[_]

  def >> : V
}

trait ViewGroupMarginLayoutParams[+This <: ViewGroupMarginLayoutParams[_, _], V <: View] extends ViewGroup.MarginLayoutParams with ViewGroupLayoutParams[This, V] {

  def marginBottom(size: Int) = {
    bottomMargin = size
    basis
  }

  def marginTop(size: Int) = {
    topMargin = size
    basis
  }

  def marginLeft(size: Int) = {
    leftMargin = size
    basis
  }

  def marginRight(size: Int) = {
    rightMargin = size
    basis
  }

  def margin(size: Int) = {
    bottomMargin = size
    topMargin = size
    leftMargin = size
    rightMargin = size
    basis
  }

  def margin(top: Int, right: Int, bottom: Int, left: Int) = {
    bottomMargin = bottom
    topMargin = top
    leftMargin = left
    rightMargin = right
    basis
  }
}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/Menu.html android.view.Menu]]`.
 */
class RichMenu[This <: android.view.Menu](val basis: This) extends TraitMenu[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/Menu.html android.view.Menu]]`. This contains several property accessors.
 */
trait TraitMenu[This <: android.view.Menu] {

  def basis: This

  @inline def +=(txt: CharSequence) = basis.add(txt)

  @inline def inflate(id: Int)(implicit activity: Activity) = {
    val inflater = activity.getMenuInflater
    inflater.inflate(id, basis)
    true
  }

  @inline def qwertyMode(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'qwertyMode'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/Menu.html#setQwertyMode(boolean) setQwertyMode(boolean)]]`
   */
  @inline def qwertyMode(p: Boolean) = qwertyMode_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/Menu.html#setQwertyMode(boolean) setQwertyMode(boolean)]]`
   */
  @inline def qwertyMode_=(p: Boolean) = { basis.setQwertyMode(p); basis }

}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/ContextMenu.html android.view.ContextMenu]]`.
 */
class RichContextMenu[This <: android.view.ContextMenu](val basis: This) extends TraitContextMenu[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/ContextMenu.html android.view.ContextMenu]]`. This contains several property accessors.
 */
trait TraitContextMenu[This <: android.view.ContextMenu] {

  def basis: This

  @inline def headerIcon(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'headerIcon'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderIcon(int) setHeaderIcon(int)]]`
   */
  @inline def headerIcon(p: Int) = headerIcon_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderIcon(int) setHeaderIcon(int)]]`
   */
  @inline def headerIcon_=(p: Int) = { basis.setHeaderIcon(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderIcon(android.graphics.drawable.Drawable) setHeaderIcon(android.graphics.drawable.Drawable)]]`
   */
  @inline def headerIcon(p: android.graphics.drawable.Drawable) = headerIcon_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderIcon(android.graphics.drawable.Drawable) setHeaderIcon(android.graphics.drawable.Drawable)]]`
   */
  @inline def headerIcon_=(p: android.graphics.drawable.Drawable) = { basis.setHeaderIcon(p); basis }

  @inline def headerTitle(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'headerTitle'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderTitle(int) setHeaderTitle(int)]]`
   */
  @inline def headerTitle(p: Int) = headerTitle_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderTitle(int) setHeaderTitle(int)]]`
   */
  @inline def headerTitle_=(p: Int) = { basis.setHeaderTitle(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderTitle(java.lang.CharSequence) setHeaderTitle(java.lang.CharSequence)]]`
   */
  @inline def headerTitle(p: java.lang.CharSequence) = headerTitle_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderTitle(java.lang.CharSequence) setHeaderTitle(java.lang.CharSequence)]]`
   */
  @inline def headerTitle_=(p: java.lang.CharSequence) = { basis.setHeaderTitle(p); basis }

  @inline def headerView(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'headerView'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderView(android.view.View) setHeaderView(android.view.View)]]`
   */
  @inline def headerView(p: android.view.View) = headerView_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ContextMenu.html#setHeaderView(android.view.View) setHeaderView(android.view.View)]]`
   */
  @inline def headerView_=(p: android.view.View) = { basis.setHeaderView(p); basis }

}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/SurfaceView.html android.view.SurfaceView]]`.
 */
class RichSurfaceView[This <: android.view.SurfaceView](val basis: This) extends TraitSurfaceView[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/SurfaceView.html android.view.SurfaceView]]`. This contains several property accessors.
 */
trait TraitSurfaceView[This <: android.view.SurfaceView] extends TraitView[This] {

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/SurfaceView.html#getHolder() getHolder()]]`
   */
  @inline def holder = basis.getHolder

  @inline def zOrderMediaOverlay(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'zOrderMediaOverlay'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/SurfaceView.html#setZOrderMediaOverlay(boolean) setZOrderMediaOverlay(boolean)]]`
   */
  @inline def zOrderMediaOverlay(p: Boolean) = zOrderMediaOverlay_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/SurfaceView.html#setZOrderMediaOverlay(boolean) setZOrderMediaOverlay(boolean)]]`
   */
  @inline def zOrderMediaOverlay_=(p: Boolean) = { basis.setZOrderMediaOverlay(p); basis }

  @inline def zOrderOnTop(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'zOrderOnTop'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/SurfaceView.html#setZOrderOnTop(boolean) setZOrderOnTop(boolean)]]`
   */
  @inline def zOrderOnTop(p: Boolean) = zOrderOnTop_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/SurfaceView.html#setZOrderOnTop(boolean) setZOrderOnTop(boolean)]]`
   */
  @inline def zOrderOnTop_=(p: Boolean) = { basis.setZOrderOnTop(p); basis }

}

/**
 * Automatically generated concrete helper class of `[[https://developer.android.com/reference/android/view/SurfaceView.html android.view.SurfaceView]]`.
 */
class SSurfaceView()(implicit context: android.content.Context, parentVGroup: TraitViewGroup[_] = null)
  extends android.view.SurfaceView(context) with TraitSurfaceView[SSurfaceView] {

  def basis = this
  override val parentViewGroup = parentVGroup

}

object SSurfaceView {
  def apply[LP <: ViewGroupLayoutParams[_, SSurfaceView]]()(implicit context: android.content.Context, defaultLayoutParam: SSurfaceView => LP): SSurfaceView = {
    val v = new SSurfaceView
    v.<<.parent.+=(v)
    v
  }

}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/ViewStub.html android.view.ViewStub]]`.
 */
class RichViewStub[This <: android.view.ViewStub](val basis: This) extends TraitViewStub[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/ViewStub.html android.view.ViewStub]]`. This contains several property accessors.
 */
trait TraitViewStub[This <: android.view.ViewStub] extends TraitView[This] {

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#getInflatedId() getInflatedId()]]`
   */
  @inline def inflatedId = basis.getInflatedId

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setInflatedId(int) setInflatedId(int)]]`
   */
  @inline def inflatedId(p: Int) = inflatedId_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setInflatedId(int) setInflatedId(int)]]`
   */
  @inline def inflatedId_=(p: Int) = { basis.setInflatedId(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#getLayoutInflater() getLayoutInflater()]]`
   */
  @inline def layoutInflater = basis.getLayoutInflater

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setLayoutInflater(android.view.LayoutInflater) setLayoutInflater(android.view.LayoutInflater)]]`
   */
  @inline def layoutInflater(p: android.view.LayoutInflater) = layoutInflater_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setLayoutInflater(android.view.LayoutInflater) setLayoutInflater(android.view.LayoutInflater)]]`
   */
  @inline def layoutInflater_=(p: android.view.LayoutInflater) = { basis.setLayoutInflater(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#getLayoutResource() getLayoutResource()]]`
   */
  @inline def layoutResource = basis.getLayoutResource

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setLayoutResource(int) setLayoutResource(int)]]`
   */
  @inline def layoutResource(p: Int) = layoutResource_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setLayoutResource(int) setLayoutResource(int)]]`
   */
  @inline def layoutResource_=(p: Int) = { basis.setLayoutResource(p); basis }

  @inline def onInflateListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'onInflateListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setOnInflateListener(android.view.ViewStub.OnInflateListener) setOnInflateListener(android.view.ViewStub.OnInflateListener)]]`
   */
  @inline def onInflateListener(p: android.view.ViewStub.OnInflateListener) = onInflateListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ViewStub.html#setOnInflateListener(android.view.ViewStub.OnInflateListener) setOnInflateListener(android.view.ViewStub.OnInflateListener)]]`
   */
  @inline def onInflateListener_=(p: android.view.ViewStub.OnInflateListener) = { basis.setOnInflateListener(p); basis }

  @inline def onInflate[U](f: (android.view.ViewStub, android.view.View) => U): This = {
    basis.setOnInflateListener(new android.view.ViewStub.OnInflateListener {
      def onInflate(p1: android.view.ViewStub, p2: android.view.View): Unit = { f(p1, p2) }
    })
    basis
  }

  @inline def onInflate[U](f: => U): This = {
    basis.setOnInflateListener(new android.view.ViewStub.OnInflateListener {
      def onInflate(p1: android.view.ViewStub, p2: android.view.View): Unit = { f }
    })
    basis
  }

}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/ActionProvider.html android.view.ActionProvider]]`.
 */
class RichActionProvider[This <: android.view.ActionProvider](val basis: This) extends TraitActionProvider[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/ActionProvider.html android.view.ActionProvider]]`. This contains several property accessors.
 */
trait TraitActionProvider[This <: android.view.ActionProvider] {

  def basis: This

  @inline def visibilityListener(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'visibilityListener'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ActionProvider.html#setVisibilityListener(android.view.ActionProvider.VisibilityListener) setVisibilityListener(android.view.ActionProvider.VisibilityListener)]]`
   */
  @inline def visibilityListener(p: android.view.ActionProvider.VisibilityListener) = visibilityListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/ActionProvider.html#setVisibilityListener(android.view.ActionProvider.VisibilityListener) setVisibilityListener(android.view.ActionProvider.VisibilityListener)]]`
   */
  @inline def visibilityListener_=(p: android.view.ActionProvider.VisibilityListener) = { basis.setVisibilityListener(p); basis }

  @inline def onActionProviderVisibilityChanged[U](f: Boolean => U): This = {
    basis.setVisibilityListener(new android.view.ActionProvider.VisibilityListener {
      def onActionProviderVisibilityChanged(p: Boolean): Unit = { f(p) }
    })
    basis
  }

  @inline def onActionProviderVisibilityChanged[U](f: => U): This = {
    basis.setVisibilityListener(new android.view.ActionProvider.VisibilityListener {
      def onActionProviderVisibilityChanged(p: Boolean): Unit = { f }
    })
    basis
  }

}

/**
 * Automatically generated enriching class of `[[https://developer.android.com/reference/android/view/TextureView.html android.view.TextureView]]`.
 */
class RichTextureView[This <: android.view.TextureView](val basis: This) extends TraitTextureView[This]

/**
 * Automatically generated helper trait of `[[https://developer.android.com/reference/android/view/TextureView.html android.view.TextureView]]`. This contains several property accessors.
 */
trait TraitTextureView[This <: android.view.TextureView] extends TraitView[This] {

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#getBitmap() getBitmap()]]`
   */
  @inline def bitmap = basis.getBitmap

  @inline def opaque(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'opaque'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setOpaque(boolean) setOpaque(boolean)]]`
   */
  @inline def opaque(p: Boolean) = opaque_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setOpaque(boolean) setOpaque(boolean)]]`
   */
  @inline def opaque_=(p: Boolean) = { basis.setOpaque(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#getSurfaceTexture() getSurfaceTexture()]]`
   */
  @inline def surfaceTexture = basis.getSurfaceTexture

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setSurfaceTexture(android.graphics.SurfaceTexture) setSurfaceTexture(android.graphics.SurfaceTexture)]]`
   */
  @inline def surfaceTexture(p: android.graphics.SurfaceTexture) = surfaceTexture_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setSurfaceTexture(android.graphics.SurfaceTexture) setSurfaceTexture(android.graphics.SurfaceTexture)]]`
   */
  @inline def surfaceTexture_=(p: android.graphics.SurfaceTexture) = { basis.setSurfaceTexture(p); basis }

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#getSurfaceTextureListener() getSurfaceTextureListener()]]`
   */
  @inline def surfaceTextureListener = basis.getSurfaceTextureListener

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener) setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener)]]`
   */
  @inline def surfaceTextureListener(p: android.view.TextureView.SurfaceTextureListener) = surfaceTextureListener_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener) setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener)]]`
   */
  @inline def surfaceTextureListener_=(p: android.view.TextureView.SurfaceTextureListener) = { basis.setSurfaceTextureListener(p); basis }

  @inline def transform(implicit no: NoGetterForThisProperty): Nothing = throw new Error("Android does not support the getter for 'transform'")

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setTransform(android.graphics.Matrix) setTransform(android.graphics.Matrix)]]`
   */
  @inline def transform(p: android.graphics.Matrix) = transform_=(p)

  /**
   * Shortcut for `[[https://developer.android.com/reference/android/view/TextureView.html#setTransform(android.graphics.Matrix) setTransform(android.graphics.Matrix)]]`
   */
  @inline def transform_=(p: android.graphics.Matrix) = { basis.setTransform(p); basis }

}

/**
 * Automatically generated concrete helper class of `[[https://developer.android.com/reference/android/view/TextureView.html android.view.TextureView]]`.
 */
class STextureView()(implicit context: android.content.Context, parentVGroup: TraitViewGroup[_] = null)
  extends android.view.TextureView(context) with TraitTextureView[STextureView] {

  def basis = this
  override val parentViewGroup = parentVGroup

}

object STextureView {
  def apply[LP <: ViewGroupLayoutParams[_, STextureView]]()(implicit context: android.content.Context, defaultLayoutParam: STextureView => LP): STextureView = {
    val v = new STextureView
    v.<<.parent.+=(v)
    v
  }

}

trait ViewImplicits {
  @inline implicit def view2RichView[V <: android.view.View](view: V) = new RichView[V](view)
  @inline implicit def viewGroup2RichViewGroup[V <: android.view.ViewGroup](viewGroup: V) = new RichViewGroup[V](viewGroup)
  @inline implicit def menu2RichMenu[V <: android.view.Menu](menu: V) = new RichMenu[V](menu)
  @inline implicit def contextMenu2RichContextMenu[V <: android.view.ContextMenu](contextMenu: V) = new RichContextMenu[V](contextMenu)
  @inline implicit def surfaceView2RichSurfaceView[V <: android.view.SurfaceView](surfaceView: V) = new RichSurfaceView[V](surfaceView)
  @inline implicit def viewStub2RichViewStub[V <: android.view.ViewStub](viewStub: V) = new RichViewStub[V](viewStub)
  @inline implicit def actionProvider2RichActionProvider[V <: android.view.ActionProvider](actionProvider: V) = new RichActionProvider[V](actionProvider)
  @inline implicit def textureView2RichTextureView[V <: android.view.TextureView](textureView: V) = new RichTextureView[V](textureView)
}
object ViewImplicits extends ViewImplicits